﻿using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;

namespace DiaryPlanner
{
    public partial class memberout : Form
    {
        Album ab;

        public memberout(Album ab)
        {
            InitializeComponent();
            this.ab = ab;
            skinSet();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            foreach (AlbumFolder af in ab.FolderList)
            {

                foreach (AlbumPhoto ap in af.PhotoList)
                {
                    ap.Image.Dispose();
                }
            }

            ab.Dispose();

            try
            {
                Directory.Delete(Application.StartupPath + "/UserImage/" + UserProfile.Instance().userId, true);
            }
            catch (IOException a)
            {
                MessageBox.Show(a.ToString());
            }

            del_diarydb();
            del_plannerdb();
            del_google();
            del_memodb();
            del_accountdb1();
            del_accountdb2();
            del_photodb1();
            del_photodb2();
            del_logindb();

           

            Application.Exit();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        public void skinSet()
        {
            string skin = UserProfile.Instance().setting;
            if (skin == "b")
            {
                this.BackColor = System.Drawing.Color.PaleTurquoise;

            }
            else if (skin == "c")
            {
                this.BackColor = System.Drawing.Color.LawnGreen;
            }
            else if (skin == "d")
            {
                this.BackColor = System.Drawing.Color.MistyRose;

            }
            else
            { //skin=="a"
                this.BackColor = System.Drawing.SystemColors.ControlLight;

            }
        }
        private void del_logindb()
        {
            try
            {
                string connectionString = "provider=Microsoft.JET.OLEDB.4.0;" //연결하는 객체의 공급자명(확장자명)
                                         + "data source = "  //데이터 소스=(경로입력하라는거)
                                         + Application.StartupPath ///상대경로 읽어옴
                                         + @"\diaryplannerdb.mdb";//실제 데이터베이스 파일이름

                string commandString = "Select * from [member]";//member테이블에 있는 모든필드들을 모두 검색해라.

                OleDbDataAdapter DBAdapter ////DataSet을 채우고 데이터 소스를 업데이트하는 데 사용되는 데이터 명령 집합 및 데이터베이스 연결하게 하는 함수
                    = new OleDbDataAdapter(commandString, connectionString);//connectionString이라는 경로와 쿼리명령을 동적할당

                OleDbCommandBuilder myCommandBuilder ///연결된 데이터베이스에서 DataSet의 변경 내용을 조정하는 데 사용되는 단일 테이블 명령을 자동으로 생성합니다
                    = new OleDbCommandBuilder(DBAdapter);

                DataSet DS = new DataSet(); //DS라는 데이터 셋 동적할당

                DBAdapter.Fill(DS, "member"); //DS라는 데이터셋에 새로운 member 테이블에 추가 또는 갱신하겠다고 알림.

                DataTable aTable = DS.Tables["member"];//member테이블을 불러와 aTable을 새로 생성해서 저장

                DataColumn[] PrimaryKey = new DataColumn[1];

                PrimaryKey[0] = aTable.Columns["id"]; //id를 기본키로 설정

                aTable.PrimaryKey = PrimaryKey;//기본키 할당

                DataRow currRow1 = aTable.Rows.Find(UserProfile.Instance().userId); //아이디 찾기
                currRow1.Delete(); //삭제

                DBAdapter.Update(DS.GetChanges(DataRowState.Deleted), "member");
                MessageBox.Show("탈퇴되었습니다");
                this.Close();
            }
            catch (DataException DE)
            {
                MessageBox.Show(DE.Message);
            }
            catch (Exception DE)
            {
                MessageBox.Show(DE.Message);
            }
        }
        private void del_diarydb()
        {
            try
            {
                string connectionString = "provider=Microsoft.JET.OLEDB.4.0;" //연결하는 객체의 공급자명(확장자명)
                                         + "data source = "  //데이터 소스=(경로입력하라는거)
                                         + Application.StartupPath ///상대경로 읽어옴
                                         + @"\diaryplannerdb.mdb";//실제 데이터베이스 파일이름

                string commandString = "Select * from [diary]";//diary테이블에 있는 모든필드들을 모두 검색해라.

                OleDbDataAdapter DBAdapter ////DataSet을 채우고 데이터 소스를 업데이트하는 데 사용되는 데이터 명령 집합 및 데이터베이스 연결하게 하는 함수
                    = new OleDbDataAdapter(commandString, connectionString);//connectionString이라는 경로와 쿼리명령을 동적할당

                OleDbCommandBuilder myCommandBuilder ///연결된 데이터베이스에서 DataSet의 변경 내용을 조정하는 데 사용되는 단일 테이블 명령을 자동으로 생성합니다
                    = new OleDbCommandBuilder(DBAdapter);
                DataSet DS = new DataSet(); //DS라는 데이터 셋 동적할당
                DBAdapter.Fill(DS, "diary"); //DS라는 데이터셋에 새로운 diary 테이블에 추가 또는 갱신하겠다고 알림.
                DataTable aTable = DS.Tables["diary"];//diary테이블을 불러와 aTable을 새로 생성해서 저장
                DataColumn[] PrimaryKey = new DataColumn[1];
                PrimaryKey[0] = aTable.Columns["Ddate"]; //Ddate를 기본키로 설정
                aTable.PrimaryKey = PrimaryKey;//기본키 할당
                for (int i = 0; i < aTable.Rows.Count; i++)
                {
                    if (aTable.Rows[i].ItemArray[4].ToString() == UserProfile.Instance().userId)
                    {
                        DataRow currRow1 = aTable.Rows[i]; //id가 들어가 있는 기본키
                        currRow1.Delete(); //삭제
                        DBAdapter.Update(DS.GetChanges(DataRowState.Deleted), "diary");
                    }
                }
            }
            catch (DataException DE)
            {
                MessageBox.Show(DE.Message);
            }
            catch (Exception DE)
            {
                MessageBox.Show(DE.Message);
            }
        }
        private void del_plannerdb()
        {
            try
            {
                string connectionString = "provider=Microsoft.JET.OLEDB.4.0;" //연결하는 객체의 공급자명(확장자명)
                                         + "data source = "  //데이터 소스=(경로입력하라는거)
                                         + Application.StartupPath ///상대경로 읽어옴
                                         + @"\diaryplannerdb.mdb";//실제 데이터베이스 파일이름

                string commandString = "Select * from [calendar]";//calendar테이블에 있는 모든필드들을 모두 검색해라.

                OleDbDataAdapter DBAdapter ////DataSet을 채우고 데이터 소스를 업데이트하는 데 사용되는 데이터 명령 집합 및 데이터베이스 연결하게 하는 함수
                    = new OleDbDataAdapter(commandString, connectionString);//connectionString이라는 경로와 쿼리명령을 동적할당

                OleDbCommandBuilder myCommandBuilder ///연결된 데이터베이스에서 DataSet의 변경 내용을 조정하는 데 사용되는 단일 테이블 명령을 자동으로 생성합니다
                    = new OleDbCommandBuilder(DBAdapter);
                DataSet DS = new DataSet(); //DS라는 데이터 셋 동적할당
                DBAdapter.Fill(DS, "calendar"); //DS라는 데이터셋에 새로운 calendar 테이블에 추가 또는 갱신하겠다고 알림.
                DataTable aTable = DS.Tables["calendar"];//calendar테이블을 불러와 aTable을 새로 생성해서 저장
                DataColumn[] PrimaryKey = new DataColumn[1];
                PrimaryKey[0] = aTable.Columns["Sdate"]; //Sdate를 기본키로 설정
                aTable.PrimaryKey = PrimaryKey;//기본키 할당
                for (int i = 0; i < aTable.Rows.Count; i++)
                {
                    if (aTable.Rows[i].ItemArray[5].ToString() == UserProfile.Instance().userId)
                    {
                        DataRow currRow1 = aTable.Rows[i]; //id가 들어가 있는 기본키
                        currRow1.Delete(); //삭제
                        DBAdapter.Update(DS.GetChanges(DataRowState.Deleted), "calendar");
                    }
                }
            }
            catch (DataException DE)
            {
                MessageBox.Show(DE.Message);
            }
            catch (Exception DE)
            {
                MessageBox.Show(DE.Message);
            }
        }
        private void del_memodb()
        {
            try
            {
                string connectionString = "provider=Microsoft.JET.OLEDB.4.0;" //연결하는 객체의 공급자명(확장자명)
                                         + "data source = "  //데이터 소스=(경로입력하라는거)
                                         + Application.StartupPath ///상대경로 읽어옴
                                         + @"\diaryplannerdb.mdb";//실제 데이터베이스 파일이름

                string commandString = "Select * from [memos]";//memos테이블에 있는 모든필드들을 모두 검색해라.

                OleDbDataAdapter DBAdapter ////DataSet을 채우고 데이터 소스를 업데이트하는 데 사용되는 데이터 명령 집합 및 데이터베이스 연결하게 하는 함수
                    = new OleDbDataAdapter(commandString, connectionString);//connectionString이라는 경로와 쿼리명령을 동적할당

                OleDbCommandBuilder myCommandBuilder ///연결된 데이터베이스에서 DataSet의 변경 내용을 조정하는 데 사용되는 단일 테이블 명령을 자동으로 생성합니다
                    = new OleDbCommandBuilder(DBAdapter);
                DataSet DS = new DataSet(); //DS라는 데이터 셋 동적할당
                DBAdapter.Fill(DS, "memos"); //DS라는 데이터셋에 새로운 memos 테이블에 추가 또는 갱신하겠다고 알림.
                DataTable aTable = DS.Tables["memos"];//memos테이블을 불러와 aTable을 새로 생성해서 저장
                DataColumn[] PrimaryKey = new DataColumn[1];
                PrimaryKey[0] = aTable.Columns["Mdate"]; //Mdate를 기본키로 설정
                aTable.PrimaryKey = PrimaryKey;//기본키 할당
                for (int i = 0; i < aTable.Rows.Count; i++)
                {
                    if (aTable.Rows[i].ItemArray[5].ToString() == UserProfile.Instance().userId)
                    {
                        DataRow currRow1 = aTable.Rows[i]; //id가 있는 기본키
                        currRow1.Delete(); //삭제
                        DBAdapter.Update(DS.GetChanges(DataRowState.Deleted), "memos");
                    }
                }
            }
            catch (DataException DE)
            {
                MessageBox.Show(DE.Message);
            }
            catch (Exception DE)
            {
                MessageBox.Show(DE.Message);
            }
        }
        private void del_accountdb1()
        {
            try
            {
                string connectionString = "provider=Microsoft.JET.OLEDB.4.0;" //연결하는 객체의 공급자명(확장자명)
                                         + "data source = "  //데이터 소스=(경로입력하라는거)
                                         + Application.StartupPath ///상대경로 읽어옴
                                         + @"\diaryplannerdb.mdb";//실제 데이터베이스 파일이름

                string commandString = "Select * from [unreg_acc]";//unreg_acc테이블에 있는 모든필드들을 모두 검색해라.

                OleDbDataAdapter DBAdapter ////DataSet을 채우고 데이터 소스를 업데이트하는 데 사용되는 데이터 명령 집합 및 데이터베이스 연결하게 하는 함수
                    = new OleDbDataAdapter(commandString, connectionString);//connectionString이라는 경로와 쿼리명령을 동적할당

                OleDbCommandBuilder myCommandBuilder ///연결된 데이터베이스에서 DataSet의 변경 내용을 조정하는 데 사용되는 단일 테이블 명령을 자동으로 생성합니다
                    = new OleDbCommandBuilder(DBAdapter);
                DataSet DS = new DataSet(); //DS라는 데이터 셋 동적할당
                DBAdapter.Fill(DS, "unreg_acc"); //DS라는 데이터셋에 새로운 unreg_acc 테이블에 추가 또는 갱신하겠다고 알림.
                DataTable aTable = DS.Tables["unreg_acc"];//unreg_acc테이블을 불러와 aTable을 새로 생성해서 저장
                DataColumn[] PrimaryKey = new DataColumn[1];
                PrimaryKey[0] = aTable.Columns["Ucode"]; //Udate를 기본키로 설정
                aTable.PrimaryKey = PrimaryKey;//기본키 할당
                for (int i = 0; i < aTable.Rows.Count; i++)
                {
                    if (aTable.Rows[i].ItemArray[6].ToString() == UserProfile.Instance().userId)
                    {
                        DataRow currRow1 = aTable.Rows[i]; //id가 있는 기본키
                        currRow1.Delete(); //삭제
                        DBAdapter.Update(DS.GetChanges(DataRowState.Deleted), "unreg_acc");
                    }
                }
            }
            catch (DataException DE)
            {
                MessageBox.Show(DE.Message);
            }
            catch (Exception DE)
            {
                MessageBox.Show(DE.Message);
            }
        }
        private void del_accountdb2()
        {
            try
            {
                string connectionString = "provider=Microsoft.JET.OLEDB.4.0;" //연결하는 객체의 공급자명(확장자명)
                                         + "data source = "  //데이터 소스=(경로입력하라는거)
                                         + Application.StartupPath ///상대경로 읽어옴
                                         + @"\diaryplannerdb.mdb";//실제 데이터베이스 파일이름

                string commandString = "Select * from [reg_acc]";//reg_acc테이블에 있는 모든필드들을 모두 검색해라.

                OleDbDataAdapter DBAdapter ////DataSet을 채우고 데이터 소스를 업데이트하는 데 사용되는 데이터 명령 집합 및 데이터베이스 연결하게 하는 함수
                    = new OleDbDataAdapter(commandString, connectionString);//connectionString이라는 경로와 쿼리명령을 동적할당

                OleDbCommandBuilder myCommandBuilder ///연결된 데이터베이스에서 DataSet의 변경 내용을 조정하는 데 사용되는 단일 테이블 명령을 자동으로 생성합니다
                    = new OleDbCommandBuilder(DBAdapter);
                DataSet DS = new DataSet(); //DS라는 데이터 셋 동적할당
                DBAdapter.Fill(DS, "reg_acc"); //DS라는 데이터셋에 새로운 reg_acc 테이블에 추가 또는 갱신하겠다고 알림.
                DataTable aTable = DS.Tables["reg_acc"];//reg_acc테이블을 불러와 aTable을 새로 생성해서 저장
                DataColumn[] PrimaryKey = new DataColumn[1];
                PrimaryKey[0] = aTable.Columns["Rcode"]; //Rdate를 기본키로 설정
                aTable.PrimaryKey = PrimaryKey;//기본키 할당
                for (int i = 0; i < aTable.Rows.Count; i++)
                {
                    if (aTable.Rows[i].ItemArray[6].ToString() == UserProfile.Instance().userId)
                    {
                        DataRow currRow1 = aTable.Rows[i]; //id가 있는 기본키
                        currRow1.Delete(); //삭제
                        DBAdapter.Update(DS.GetChanges(DataRowState.Deleted), "reg_acc");
                    }
                }
            }
            catch (DataException DE)
            {
                MessageBox.Show(DE.Message);
            }
            catch (Exception DE)
            {
                MessageBox.Show(DE.Message);
            }
        }
        private void del_photodb1()
        {
            try
            {
                string connectionString = "provider=Microsoft.JET.OLEDB.4.0;" //연결하는 객체의 공급자명(확장자명)
                                         + "data source = "  //데이터 소스=(경로입력하라는거)
                                         + Application.StartupPath ///상대경로 읽어옴
                                         + @"\diaryplannerdb.mdb";//실제 데이터베이스 파일이름

                string commandString = "Select * from [photo]";//photo테이블에 있는 모든필드들을 모두 검색해라.

                OleDbDataAdapter DBAdapter ////DataSet을 채우고 데이터 소스를 업데이트하는 데 사용되는 데이터 명령 집합 및 데이터베이스 연결하게 하는 함수
                    = new OleDbDataAdapter(commandString, connectionString);//connectionString이라는 경로와 쿼리명령을 동적할당

                OleDbCommandBuilder myCommandBuilder ///연결된 데이터베이스에서 DataSet의 변경 내용을 조정하는 데 사용되는 단일 테이블 명령을 자동으로 생성합니다
                    = new OleDbCommandBuilder(DBAdapter);
                DataSet DS = new DataSet(); //DS라는 데이터 셋 동적할당
                DBAdapter.Fill(DS, "photo"); //DS라는 데이터셋에 새로운 photo 테이블에 추가 또는 갱신하겠다고 알림.
                DataTable aTable = DS.Tables["photo"];//photo테이블을 불러와 aTable을 새로 생성해서 저장
                DataColumn[] PrimaryKey = new DataColumn[1];
                PrimaryKey[0] = aTable.Columns["Pname"]; //Pname를 기본키로 설정
                aTable.PrimaryKey = PrimaryKey;//기본키 할당
                for (int i = 0; i < aTable.Rows.Count; i++)
                {
                    if (aTable.Rows[i].ItemArray[3].ToString() == UserProfile.Instance().userId)
                    {
                        DataRow currRow1 = aTable.Rows[i]; //id가 있는 기본키
                        currRow1.Delete(); //삭제
                        DBAdapter.Update(DS.GetChanges(DataRowState.Deleted), "photo");
                    }
                }
            }
            catch (DataException DE)
            {
                MessageBox.Show(DE.Message);
            }
            catch (Exception DE)
            {
                MessageBox.Show(DE.Message);
            }
        }
        private void del_photodb2()
        {
            try
            {
                string connectionString = "provider=Microsoft.JET.OLEDB.4.0;" //연결하는 객체의 공급자명(확장자명)
                                         + "data source = "  //데이터 소스=(경로입력하라는거)
                                         + Application.StartupPath ///상대경로 읽어옴
                                         + @"\diaryplannerdb.mdb";//실제 데이터베이스 파일이름

                string commandString = "Select * from [photo_folder]";//photo_folder테이블에 있는 모든필드들을 모두 검색해라.

                OleDbDataAdapter DBAdapter ////DataSet을 채우고 데이터 소스를 업데이트하는 데 사용되는 데이터 명령 집합 및 데이터베이스 연결하게 하는 함수
                    = new OleDbDataAdapter(commandString, connectionString);//connectionString이라는 경로와 쿼리명령을 동적할당

                OleDbCommandBuilder myCommandBuilder ///연결된 데이터베이스에서 DataSet의 변경 내용을 조정하는 데 사용되는 단일 테이블 명령을 자동으로 생성합니다
                    = new OleDbCommandBuilder(DBAdapter);
                DataSet DS = new DataSet(); //DS라는 데이터 셋 동적할당
                DBAdapter.Fill(DS, "photo_folder"); //DS라는 데이터셋에 새로운 photo_folder 테이블에 추가 또는 갱신하겠다고 알림.
                DataTable aTable = DS.Tables["photo_folder"];//photo_folder테이블을 불러와 aTable을 새로 생성해서 저장
                DataColumn[] PrimaryKey = new DataColumn[1];
                PrimaryKey[0] = aTable.Columns["realName"]; //realName를 기본키로 설정
                aTable.PrimaryKey = PrimaryKey;//기본키 할당
                for (int i = 0; i < aTable.Rows.Count; i++)
                {
                    if (aTable.Rows[i].ItemArray[2].ToString() == UserProfile.Instance().userId)
                    {
                        DataRow currRow1 = aTable.Rows[i]; //id가 있는 기본키
                        currRow1.Delete(); //삭제
                        DBAdapter.Update(DS.GetChanges(DataRowState.Deleted), "photo_folder");
                    }
                }
            }
            catch (DataException DE)
            {
                MessageBox.Show(DE.Message);
            }
            catch (Exception DE)
            {
                MessageBox.Show(DE.Message);
            }
        }
        private void del_google()
        {
            try
            {
                string connectionString = "provider=Microsoft.JET.OLEDB.4.0;" //연결하는 객체의 공급자명(확장자명)
                                         + "data source = "  //데이터 소스=(경로입력하라는거)
                                         + Application.StartupPath ///상대경로 읽어옴
                                         + @"\diaryplannerdb.mdb";//실제 데이터베이스 파일이름

                string commandString = "Select * from [google]";//google테이블에 있는 모든필드들을 모두 검색해라.

                OleDbDataAdapter DBAdapter ////DataSet을 채우고 데이터 소스를 업데이트하는 데 사용되는 데이터 명령 집합 및 데이터베이스 연결하게 하는 함수
                    = new OleDbDataAdapter(commandString, connectionString);//connectionString이라는 경로와 쿼리명령을 동적할당

                OleDbCommandBuilder myCommandBuilder ///연결된 데이터베이스에서 DataSet의 변경 내용을 조정하는 데 사용되는 단일 테이블 명령을 자동으로 생성합니다
                    = new OleDbCommandBuilder(DBAdapter);
                DataSet DS = new DataSet(); //DS라는 데이터 셋 동적할당
                DBAdapter.Fill(DS, "google"); //DS라는 데이터셋에 새로운 google 테이블에 추가 또는 갱신하겠다고 알림.
                DataTable aTable = DS.Tables["google"];//google테이블을 불러와 aTable을 새로 생성해서 저장
                DataColumn[] PrimaryKey = new DataColumn[1];
                PrimaryKey[0] = aTable.Columns["id"]; //Ddate를 기본키로 설정
                aTable.PrimaryKey = PrimaryKey;//기본키 할당
                for (int i = 0; i < aTable.Rows.Count; i++)
                {
                    if (aTable.Rows[i].ItemArray[0].ToString() == UserProfile.Instance().userId)
                    {
                        DataRow currRow1 = aTable.Rows[i]; //id가 있는 기본키
                        currRow1.Delete(); //삭제
                        DBAdapter.Update(DS.GetChanges(DataRowState.Deleted), "google");
                    }
                }
                   
               
            }
            catch (DataException DE)
            {
                MessageBox.Show(DE.Message);
            }
            catch (Exception DE)
            {
                MessageBox.Show(DE.Message);
            }
        }
    }
}
